/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package geografia;

import vista.administracion.GestorVistaAdministracionPnl;
import java.util.Iterator;
import java.util.List;
import javax.swing.JOptionPane;

/**
 *
 * @author Raul
 */
public class GestorVistaLocalidadesABM extends GestorVistaAdministracionPnl {
    
    private GestorLocalidad gestorModelo = new GestorLocalidad();

    public GestorLocalidad getGestorModelo() {
        return gestorModelo;
    }

    public void setGestorModelo(GestorLocalidad gestorModelo) {
        this.gestorModelo = gestorModelo;
    }
    
    @Override
    public void inicializarVista(){
        super.inicializarVista();
        getFormulario().setearTituloPanelTabla("Localidades");
        getFormulario().agregarFiltrosDeBusqueda(gestorModelo.getFiltros());
        cargarModeloComponente();
    }
    
    @Override
    public void registrarNuevaEntidad() {
        GestorVistaLocalidadIntFrm gestorEditor = new GestorVistaLocalidadIntFrm();
        gestorEditor.abrirFormulario();
        super.agregarEditor(gestorEditor.getFormulario());
        //detectar cierre del formulario de edicion
        gestorEditor.getFormulario().addInternalFrameListener(new MyAdapter());
    }

    @Override
    public void modificar(Object modelo) {
        //abrir el formulario de edicion
        GestorVistaLocalidadIntFrm gestorEditor = new GestorVistaLocalidadIntFrm((Localidad) modelo);
        gestorEditor.abrirFormulario();
        super.agregarEditor(gestorEditor.getFormulario());
        //detectar cierre del formulario de edicion
        gestorEditor.getFormulario().addInternalFrameListener(new MyAdapter());
    }

    @Override
    public void eliminar(Object modelo) {
        gestorModelo.setModelo((Localidad) modelo);
        gestorModelo.eliminar();
    }
    
    @Override
    public void cargarModeloComponente(){
        Object[] titulos={ "","C.P", "Localidad", "Provincia"};
        int [] anchos = {0,20,20,20};
        getFormulario().cargarTitulosTabla(titulos,anchos);
    }
    
    @Override
    public void cargarDatos(java.util.Collection datos){
        Iterator i= datos.iterator();
        //agregar las localidades a la tabla
        while(i.hasNext()){
            Localidad l = (Localidad)i.next();
            Object[] fila={l,
                l.getCodigoPostal(),
                l.getNombre(),
                l.getProvincia()};
            getFormulario().agregarFilaTabla(fila);
        }
    }
    
    @Override
    public int mostrarDialogoDeEliminacion(){
        return super.mostrarDialogoDeEliminacion(getFormulario(), "Esta seguro que desea eliminar\n"
                + " la localidad seleccionada?");
    }
    
    @Override
    public void busquedaRapida(String filtro, String valor) {
        cargarModeloComponente();
        if (filtro.equals("Codigo Postal")) {
            try {
                cargarDatos(gestorModelo.buscar(filtro, Integer.parseInt(valor)));
            } catch (NumberFormatException numberFormatException) {
                JOptionPane.showMessageDialog(super.getFormulario(),
                        "Ingrese para el código postal un valor numérico",
                        "Formato de código postal incorrecto",
                        JOptionPane.WARNING_MESSAGE);
            }
        } else {
            cargarDatos(gestorModelo.buscar(filtro, valor));
        }
        getFormulario().getEditorPnl().removeAll();
        getFormulario().getEditorPnl().repaint();
    }
}
